package schema

import (
	"entgo.io/ent"
	"entgo.io/ent/dialect/entsql"
	"entgo.io/ent/schema"
	"entgo.io/ent/schema/field"
	"time"
)

const (
	False = 0
	True  = 1

	MenuType   = 0
	ButtonType = 0
)

type AdminMenu struct {
	ent.Schema
}

// Fields of the User.
func (AdminMenu) Fields() []ent.Field {
	return []ent.Field{
		field.Int64("id"),
		field.Int32("menu_type").Default(0).Comment("类型"),
		field.String("path").MaxLen(255).Default("").Comment("路由路径"),
		field.String("name").MaxLen(255).Default("").Comment("菜单名称"),
		field.String("component").MaxLen(255).Default("").Comment("组件路由"),
		field.String("redirect").MaxLen(255).Default("").Comment("重定向"),
		field.String("title").MaxLen(255).Default("").Comment("标题"),
		field.String("is_link").MaxLen(255).Default("").Comment("链接地址"),
		field.Bool("is_hide").Default(false),
		field.Bool("is_keep_alive").Default(false),
		field.Bool("is_affix").Default(false),
		field.Bool("is_iframe").Default(false),
		field.String("icon").MaxLen(255).Default("").Comment("图标"),
		field.Int64("parent_id").Default(0).Comment("父id"),
		field.JSON("parent_path", []string{}).Default([]string{}).Comment("路径"),
		field.Int32("sort").Default(0).Comment("排序"),
		field.Time("created_at").Default(time.Now).Comment("创建时间"),
		field.Time("updated_at").Default(time.Now).UpdateDefault(time.Now).Comment("更新时间"),
	}
}

// Edges of the User.
func (AdminMenu) Edges() []ent.Edge {
	return nil
}

func (AdminMenu) Annotations() []schema.Annotation {
	return []schema.Annotation{
		entsql.Annotation{Table: "admin_menu"},
	}
}
